package com.sam.lib.store;

import android.content.Context;

import java.util.Map;
import java.util.Set;

public interface IStore {

    void putStringSet(Context context, String name, int mode, String key, Set<String> values);

    Set<String> getStringSet(Context context, String name, int mode, String key);

    Set<String> getStringSet(Context context, String name, int mode, String key, Set<String> def);

    void putString(Context context, String name, int mode, String key, String value);

    String getString(Context context, String name, int mode, String key);

    String getString(Context context, String name, int mode, String key, String def);

    void putLong(Context context, String name, int mode, String key, long value);

    long getLong(Context context, String name, int mode, String key);

    long getLong(Context context, String name, int mode, String key, long def);

    void putFloat(Context context, String name, int mode, String key, float value);

    float getFloat(Context context, String name, int mode, String key);

    float getFloat(Context context, String name, int mode, String key, float def);

    void putInt(Context context, String name, int mode, String key, int value);

    int getInt(Context context, String name, int mode, String key);

    int getInt(Context context, String name, int mode, String key, int def);

    void putBoolean(Context context, String name, int mode, String key, boolean value);

    boolean getBoolean(Context context, String name, int mode, String key);

    boolean getBoolean(Context context, String name, int mode, String key, boolean def);

    void removeKey(Context context, String name, int mode, String key);

    Map<String,?> getAll(Context context, String name, int mode);

    void clearAll(Context context, String name, int mode);

    void saveAll(Context context, String name, int mode, Map<String,?> data);

    void migrate(Context context, String toName, int toMode, IStore fromStore, String fromName, int fromMode);


}
